package main

import (
	"encoding/json"
	"fmt"
)

type Fruit struct {
	Name  string `json:"name"`
	Color string `json:"color,omitempty"`
	/*
		omitempty 表示只有在字段不为空时，编译器才会进行序列化，且不会在生成的 JSON对象 中添加该键名。字段值为空时，编译器将忽略该字段
	*/
}

func main() {
	f := Fruit{Name: "apple", Color: "red"}
	s := `{"name":"banana","weight":100}`

	if err := json.Unmarshal([]byte(s), &f); err != nil { //json.Unmarshal([]byte(s),&f) 会将与 f 字段名相同的字段中原来的信息覆盖掉，变成 s 中的数据，字段名不相同的字段忽略掉。
		fmt.Println("err unmarshalling")
		return
	}
	fmt.Println(f)
	/*结果:
	{banana red}
	*/
}
